package com.hd.mp.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 设置数据库类型
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
        // 设置分页最大查1万条
        paginationInnerInterceptor.setMaxLimit(20L);
        interceptor.addInnerInterceptor(paginationInnerInterceptor);
        //乐观锁
        /**
         * 当要更新一条记录的时候，希望这条记录没有被别人更新
         *
         * 乐观锁实现方式：
         *
         * 取出记录时，获取当前 ​version​
         * 更新时，带上这个 ​version​
         * 执行更新时， ​set version = newVersion where version = oldVersion​
         * 如果 ​version不对，就更新失败
         */
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());

        return interceptor;
    }

}
